import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';

class LocaleService {
  final _box = GetStorage();
  final _key = 'locale';

  // 获取当前区域
  Locale get locale {
    String? localeString = _box.read(_key);
    if (localeString?.isEmpty ?? true) {
      return Get.deviceLocale ?? const Locale('zh', 'CN');
    }

    List<String> parts = localeString!.split('_');
    return Locale(parts[0], parts.length > 1 ? parts[1] : '');
  }

  // 保存区域设置到本地
  void _saveLocaleToBox(String locale) => _box.write(_key, locale);

  // 切换到指定语言
  void changeLocale(String languageCode, String countryCode) {
    final localeString = '${languageCode}_$countryCode';

    Get.updateLocale(Locale(languageCode, countryCode));
    _saveLocaleToBox(localeString);
  }

  // 切换到英文
  void switchToEnglish() {
    changeLocale('en', 'US');
  }

  // 切换到中文
  void switchToChinese() {
    changeLocale('zh', 'CN');
  }

  // 切换到韩文
  void switchToKorean() {
    changeLocale('ko', 'KR');
  }

  // 切换到阿拉伯文
  void switchToArabic() {
    changeLocale('ar', 'SA');
  }
}
